/*
 * To change this template, choose Tools | Templates
 * and open the template in the editor.
 */

package com.rcn.domain;

import java.io.Serializable;
import java.util.Date;
import javax.persistence.*;


/**
 *
 * @author Nicolas
 */
@Entity
@Table (name="paciente")
@Inheritance(strategy=InheritanceType.SINGLE_TABLE)
public class Paciente extends Persona implements Serializable{
    private long id;
    private String domicilioCalle;
    private int domicilioNumero;
    private int domicilioPiso;
    private int nroDocumento;
    private String domicilioDepto;
    private ObraSocial obraSocial;
    private Date fechaNacimiento;
    private String telefono;
    private String nroObraSocial;

    /**
     * @return the domicilioCalle
     */
    @Basic
    @Column(name = "domicilioCalle")
    public String getDomicilioCalle() {
        return domicilioCalle;
    }

    /**
     * @param domicilioCalle the domicilioCalle to set
     */
    public void setDomicilioCalle(String domicilioCalle) {
        this.domicilioCalle = domicilioCalle;
    }

    /**
     * @return the domicilioNumero
     */
    @Basic
    @Column(name = "domicilioNumero")
    public int getDomicilioNumero() {
        return domicilioNumero;
    }

    /**
     * @param domicilioNumero the domicilioNumero to set
     */
    public void setDomicilioNumero(int domicilioNumero) {
        this.domicilioNumero = domicilioNumero;
    }

    /**
     * @return the domicilioPiso
     */
    @Basic
    @Column(name = "domicilioPiso")
    public int getDomicilioPiso() {
        return domicilioPiso;
    }

    /**
     * @param domicilioPiso the domicilioPiso to set
     */
    public void setDomicilioPiso(int domicilioPiso) {
        this.domicilioPiso = domicilioPiso;
    }

    /**
     * @return the domicilioDepto
     */
    @Basic
    @Column(name = "domicilioDpto")
    public String getDomicilioDepto() {
        return domicilioDepto;
    }

    /**
     * @param domicilioDepto the domicilioDepto to set
     */
    public void setDomicilioDepto(String domicilioDepto) {
        this.domicilioDepto = domicilioDepto;
    }

    /**
     * @return the obraSocial
     */
    @ManyToOne(cascade = CascadeType.PERSIST)
    @JoinColumn(name = "obraSocial")
    public ObraSocial getObraSocial() {
        return obraSocial;
    }

    /**
     * @param obraSocial the obraSocial to set
     */
    public void setObraSocial(ObraSocial obraSocial) {
        this.obraSocial = obraSocial;
    }

    /**
     * @return the fechaNacimiento
     */
    @Basic
    @Column(name = "fechaNacimiento")
    @Temporal(TemporalType.DATE)
    public Date getFechaNacimiento() {
        return fechaNacimiento;
    }

    /**
     * @param fechaNacimiento the fechaNacimiento to set
     */
    public void setFechaNacimiento(Date fechaNacimiento) {
        this.fechaNacimiento = fechaNacimiento;
    }

    /**
     * @return the nroDocumento
     */
    @Basic
    @Column(name = "nroDoc")
    public int getNroDocumento() {
        return nroDocumento;
    }

    /**
     * @param nroDocumento the nroDocumento to set
     */
    public void setNroDocumento(int nroDocumento) {
        this.nroDocumento=nroDocumento;
    }

    @Override
    public String toString(){
        return this.getNombre()+" "+this.getApellido();
    }

    /**
     * @return the id
     */
    @GeneratedValue(strategy=GenerationType.AUTO)
    @Column(name = "idPaciente")
    @Id
    public long getId() {
        return id;
    }

    /**
     * @param id the id to set
     */
    public void setId(long id) {
        this.id = id;
    }
    
    /**
     * @return the telefono
     */
    @Basic
    @Column(name = "telefono")
    public String getTelefono() {
        return telefono;
    }

    /**
     * @param telefono the telefono to set
     */
    public void setTelefono(String telefono) {
        this.telefono = telefono;
    }
    
    /**
     * @return the nroObraSocial
     */
    @Basic
    @Column(name = "nroObraSocial")
    public String getNroObraSocial() {
        return nroObraSocial;
    }

    /**
     * @param nroObraSocial the nroObraSocial to set
     */
    public void setNroObraSocial(String nroObraSocial) {
        this.nroObraSocial = nroObraSocial;
    }
    
    @Override
    public boolean equals(Object paciente){
        if(paciente instanceof Paciente){
            if(((Paciente)paciente).getId()==this.getId()){
                return true;
            }
        }
        return false;
    }
}
